草庐IT

Java String.split 内存泄漏?

全部标签

c++ - 什么是 C/C++ for Windows 中基于共享内存的轻量级 IPC 机制?

我现在一直在从事一些C++项目,这些项目涉及使用窗口消息进行一些简单的IPC。在许多情况下,通过将数据放入共享内存段然后将指针传递到带有SendMessage的共享内存,一些额外的数据随窗口消息一起传递。称呼。一直重复这个很烦人,但在通过发明另一个IPC系统来解决这种沉闷的重复之前,我想问:是否有满足标准的现有框架?:用C或C++编写(我们在这里使用MSVC)尽可能少的依赖;在最好的情况下,它只是一些使用纯C++和Windows标准库的源文件,可以直接编译到应用程序/库中。适用于WindowsXP及更新版本基于窗口消息和共享内存段构建非常需要正确的错误报告(远程进程消失、远程进程不理解

c# - 如何最小化Windows中的内存使用

我用C#编写了一个helloworld程序(没有任何UI的Windows应用程序)。发布构建的可执行文件除了Thread.Sleep(50000)//50秒外什么都不做。我打开了sysinternals(像任务管理器这样的分析器)。这个可执行文件占用了7MB内存(私有(private)字节)!!任何人都可以解释发生了什么以及如何减少内存使用量。附言我还尝试使用NGEN预编译.exe,但仍然使用相同的内存。非常感谢 最佳答案 C#(和其他JIT编译/解释语言)通常最终会在后台自动为您做很多事情。虽然您编写的内容很简单,但在后台进行了大

windows - 虚拟内存 : process' one and system's one

本文http://msdn.microsoft.com/en-us/library/aa366912(v=vs.85).aspx指出win32环境(假定为32位)中的虚拟内存一半专用于用户模式进程,一半专用于内核模式进程。如果我记得分页,每个进程都应该有自己的地址空间,从0到任何地址(根据文章,最大0x7FFFFFFF)。但是内核驱动程序呢?是否每个内核驱动程序/程序都有从0x80000000到0xFFFFFFFF的内核地址空间?或者我只是弄错了? 最佳答案 我相信您的印象是驱动程序是独立的进程;对于整体内核和混合内核(NT被认为是

C++ - 直接写入内存(内核)

我之前也问过同样的问题,但是我的帖子不知为何被删除了。无论如何,我正在尝试使用C++并编写一个允许我直接访问内存并向其中写入内容的程序。我听说我需要对内核做一些事情,因为它是连接操作系统和应用程序的“桥梁”(我认为)。无论如何,我可以为内核下载一些sdk吗?我在我之前的帖子(一段时间后被删除)中说过,这样做的原因是因为我想按照我大学教授的要求尝试让Windows7崩溃。(所以请不要问我诸如“你为什么要让windows崩溃?”之类的问题……)任何帮助将不胜感激。 最佳答案 如果您对使用内核感兴趣,您可能正在寻找Windows驱动程序工

windows - 服务启动的进程无法分配内存

我有一个作为LocalSystem帐户运行的C#服务,它根据需要启动许多其他进程。这几个月一直很好。就在本周,一些子流程崩溃了。我已将远程调试器附加到它们,但它们在内存分配方面失败(C++new运算符返回0x0),这是崩溃的间接原因。有趣的是,如果我将RDP接入机器,我可以轻松地从CMD启动进程,没有任何问题。然而,当服务启动它时,不行。机器运行的是WindowsXPSP3。这不是因为提交费用大约是物理RAM的80%。服务可以使用多少进程或多少内存有一些特殊限制,包括该服务产生的进程?为什么这些进程无法分配内存的任何其他想法。编辑:我已经仔细查看了SysInternals的Procmo

Windows + wmic + 内存

我想在批处理脚本中汇总所有名为“test.exe”的程序的已用内存。我可以使用以下命令获取所有相应进程的内存使用情况:C:\>wmicprocesswherename="test.exe"getworkingsetsize|findstr/v"WorkingSetSize"5575884866174976所以,我想我想用FOR循环将所有这些值相加。以下命令只会显示i变量,但我仍然收到附加错误。C:\>for/F%iIN('wmicprocesswherename="test.exe"getworkingsetsize^|findstr/v"WorkingSetSize"')DOecho

c++ - 内存模块是否映射到进程的虚拟空间?

我在Windows上看到函数EnumProcessModules返回为指定进程加载的多个模块(其中一些应该是系统dll,如guard32.dll、version.dll等。)我的问题是:这些模块是否映射到进程的虚拟空间?我可以从主应用程序代码跳转到位于这些模块之一的指令(当然知道地址)吗? 最佳答案 是的,DLL应该映射到进程虚拟地址空间。如果页面中的代码尚未执行,则映射可能不会得到真实物理页面的支持,并且当然执行“随机”代码位而没有正确的初始化或设置代码以正确执行(例如调用处理函数使用一些需要在另一个函数中分配的数据)显然会在一些

windows - WinDbg - 将字符串参数与内存中的字符串进行比较

我需要将作为参数传递给WinDbg的字符串与内存中的字符串进行比较。如何实现?例如,字符串位于加载的PE中的特定偏移处。所以,我可以通过执行da/c100轻松读取字符串.但是,我如何使用这个字符串,将它与arg1进行比较?,在WinDbg脚本中,使用.if?(和$SPAT(),我猜)我试图读取da的输出命令进入别名或用户定义的寄存器,但我没有成功。 最佳答案 您可以使用as/c将字符串分配给别名:0:012>as/cHello.printf"%ma",061300000:012>.echo@"${Hello}"Helloworld然

c++ - 如何正确打印内存中变量的地址?

我正在尝试了解C或C++结构是如何存储在内存中的。我用C++编写了一个小程序,然后将其编译并运行到调试器中。我使用带有%p和&variable的printf来打印地址,但是打印出的地址和内存中的实际地址完全不同。事实上,打印地址甚至无效。知道如何正确打印变量或结构的真实地址吗?谢谢这是我写的程序的源代码:#include#include#include#include#defineXXX__asm__("nop");intmain(){XXX;XXX;constchar*short_string="thisisashortstring";constwchar_t*long_string

windows - 非托管 VC++ 应用程序在 Windows 服务器上的内存消耗

好的,所以我有一个运行在Windows2003服务器上的非常大的多线程非托管C++应用程序(服务器)。它为20-50个执行各种业务逻辑的并发用户托管session...有时由于用户在客户端打开大量窗口而导致对象/session缓存等问题,它可能会使用大量内存(每个窗口都有一个单独的服务器“session”。我们通常会看到超过5-600MB的物理内存和5-600MB的虚拟内存的消耗。一旦达到这一点,我们似乎开始出现“内存不足”错误。现在我知道Windows会在感觉需要释放物理内存时开始页面错误,而且win32应用程序通常只能分配最多4GB的内存,实际上只有2GB可供应用程序实际使用的“用